草庐IT

c++ - C 和 C++ 中 union 的用途

全部标签

c++ - 指针中(星号)的确切用途是什么?

我是编程新手,我正在努力思考“指针”的概念。intmain(){intx=5;int*pointerToInteger=&x;cout为什么当我cout输出是一个十六进制值,但是当我使用cout时输出为5(x=5)。 最佳答案 *根据上下文有不同的含义。指针声明int*ap;//Itdefinesaptobeapointertoanint.voidfoo(int*p);//Declaresfunctionfoo.//fooexpectsapointertoanintasanargument.取消引用表达式中的指针。inti=0;in

c++ - C++ 中 ## 运算符的用途是什么,它叫什么?

我查看了DirectX2009年3月SDK附带的DXUTCore项目,注意到他们没有制作普通的访问器方法,而是使用宏来创建通用访问器,类似于以下内容:#defineGET_ACCESSOR(x,y)inlinexGet##y(){DXUTLockl;returnm_state.m_##y;};...GET_ACCESSOR(WCHAR*,WindowTitle);##运算符似乎只是将第二个参数的文本插入到宏中,以创建一个使用该文本对变量进行操作的函数。这是C++中的标准(即不是Microsoft特定的)吗?它的使用被认为是好的做法吗?而且,那个运算符叫什么?

c++ - 带有构造函数的类的匿名 union/结构

即使我使用-std=c++11标志编译,GCC也会提示这段代码,而且我的gcc版本应该支持无限制union(>4.6)。union{struct{float4I,J,K,T;};struct{float4m_lines[4];};struct{floatm16f[16];};struct{floatm44f[4][4];};};请注意,float4有一个带0个参数的非默认构造函数。classfloat4{public:float4();....};知道我能做什么吗?错误是:::::I’withconstructornotallowedinanonymousaggregate

c++ - 包含可变结构的 union

这似乎类似于PODstructscontainingconstantmember,但有点相反。#includestructA{inta;};unionU{volatileAa;longb;};intmain(){Uu1;Uu2;u1.a.a=12;u2=u1;std::coutg++4.8.3编译这段代码没有错误并且运行正常:$g++-std=c++03a.cpp-oa_gcc$./a_gcc12但是clang++3.5.1产生了一个错误(我手动包装了错误消息以防止代码框滚动):$clang++-std=c++03a.cpp-oa_clanga.cpp:8:7:error:member

c++ - 将 union 与结构内的位字段结合使用的正确语法

我有以下一系列结构。structFooWord1{unsignedintFill:8;unsignedintsomeData1:18;unsignedintsomeData2:6;};structFooWord2{unsignedintFill:8;union{unsignedintA_Bit:1;unsignedintB_Bit:1;};unsignedintsomeData3:23;};structFoo_Data{FooWord1fooWord1;FooWord2fooWord2;FooWord3fooWord3;//similartoFooWord1FooWord4fooWor

c# - C# 中的 C++ union — 奇怪的行为

我正在尝试使用C#中的VHDAPI创建一些vhd/vhdx文件。有一个看起来像这样的C++union:typedefstruct_CREATE_VIRTUAL_DISK_PARAMETERS{CREATE_VIRTUAL_DISK_VERSIONVersion;union{struct{GUIDUniqueId;ULONGLONGMaximumSize;ULONGBlockSizeInBytes;ULONGSectorSizeInBytes;PCWSTRParentPath;PCWSTRSourcePath;}Version1;struct{GUIDUniqueId;ULONGLONG

c# - FlatBuffers:使用 union 发送多种数据包类型

我将通过连接发送多种缓冲区类型。为简单起见,想象一个类似这样的模式:namespaceMyEvents;tableEventOne{id:uint;timestamp:ulong;adress:string;}tableEventTwo{id:uint;timestamp:ulong;strength:float;}unionEvents{EventOne,EventTwo}tableEventHolder{theEvent:Events;}root_typeEventHolder;我为C++和C#生成所需的文件,并根据需要将它们包含在我各自的项目中。下面是我在C++中编码事件的方式-

c++ - 匿名空无标记类、结构、 union 和枚举

!免责声明!:请注意,我说的是未标记声明。我知道这可能是一个非正式术语,我的意思是声明不是typedef并且它不声明匿名类型的对象。在这些情况下,一切都很清楚。问题一:以下哪个是格式正确的C++程序?(多选)//Oneintmain(){struct{};//orclass{};shouldbethesame}//Twointmain(){enum{};}//Threeintmain(){union{};}备注:MSVC9.0接受所有这三个。在第一位,它给出了警告。在第二和第三,我们得到0个错误和0个警告。在线comeau仅接受三号,一号和二号无法编译,并显示诊断消息“声明未声明任何内

c# - 如何将带有 const char* 的 C union 映射到 C# 结构?

在本地库的回调函数中,我需要访问一个espeak_EVENT数组。问题出在原C代码中的UNION语句:typedefstruct{espeak_EVENT_TYPEtype;unsignedintunique_identifier;//messageidentifier(or0forkeyorcharacter)inttext_position;//thenumberofcharactersfromthestartofthetextintlength;//wordlength,incharacters(forespeakEVENT_WORD)intaudio_position;//th

c++ - union 体的活跃成员,统一的初始化和构造函数

作为(WorkingDraftof)C++Standard说:9.5.1[class.union]Inaunion,atmostoneofthenon-staticdatamemberscanbeactiveatanytime,thatis,thevalueofatmostoneofthenon-staticdatamemberscanbestoredinaunionatanytime.[...]Thesizeofaunionissufficienttocontainthelargestofitsnon-staticdatamembers.Eachnon-staticdatamembe